package Foundation;
import Sistem.*;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import TechnicalServices.DataConnector;
import TechnicalServices.IMapper;
import DomainPackage.*;
public class YolcuUcakMapper implements IMapper {
private Register r;
	@Override
	public Object get(int ID) {
		YolcuUcak yolcuucak = new YolcuUcak();
		ResultSet rs = DataConnector.getInstance().query("select * from yolcuucak where ucakid = " + ID + "");
		
		if (rs != null){
            
            try {
                    
                    rs.next();
            		yolcuucak.setUcakID(Integer.parseInt(rs.getString(1)));
            		yolcuucak.setUcakAdi(rs.getString(2));
            		yolcuucak.setMenzil(Float.valueOf(rs.getString(3)));
            		yolcuucak.setAgirlik(Float.valueOf(rs.getString(4)));
            		yolcuucak.setUzunluk(Integer.parseInt(rs.getString(5)));
            		yolcuucak.setMaksimumHiz(Float.valueOf(rs.getString(6)));
            		yolcuucak.businessKoltukEkle(Integer.parseInt(rs.getString(7)));
            		yolcuucak.ekonomikKoltukEkle(Integer.parseInt(rs.getString(8)));
            		yolcuucak.setBagajKapasitesi(Float.valueOf(rs.getString(9)));
                    
            		
                             return yolcuucak;
                   
            } catch (NumberFormatException e) {
                    System.out.println("YolcuUcakMapper: number format problem");
                    e.printStackTrace();
            } catch (SQLException e) {
                    System.out.println("YolcuUcakMapper: sql problem");
                    e.printStackTrace();
            }
    }
    else
            System.out.println("no yolcuucak with given ID");
		return null;
	}

	@Override
	public int put(Object object) {
		YolcuUcak yolcuucak=(YolcuUcak) object;
		
			if(!DataConnector.getInstance().update("INSERT INTO yolcuucak "+
					"(ucakid, ucakadi, bagajkapasitesi, menzil, agirlik, uzunluk, maksimumhiz, ekonomikkoltuksayisi, businesskoltuksayisi) " +
					"values ('"+yolcuucak.getUcakID()+"', '"+
					yolcuucak.getUcakAdi()+"', '"+
					yolcuucak.getBagajKapasitesi()+"', '"+
					yolcuucak.getMenzil()+"', '"+
					yolcuucak.getAgirlik()+"', '"+
					yolcuucak.getUzunluk()+"', '"+
					yolcuucak.getMaksimumHiz()+"', '"+
					yolcuucak.getYolcuUcakEkonomikKoltukSayisi()+"', '"+
					yolcuucak.getYolcuUcakBusinessKoltukSayisi()+"')")){
				System.out.println("error");
			}
		return 0;
	}

	@Override
	public List<Object> getAll() {
		List<Object> allYolcuUcakList = new ArrayList<Object>();
    	ResultSet rs = DataConnector.getInstance().query("select * from yolcuucak;");
    	int numberOfRows=0;
		try {
			ResultSetMetaData rsMetaData = rs.getMetaData();
            numberOfRows = rsMetaData.getColumnCount()+1;
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
    try {
    	if (rs != null){
            while(rs.next()){
                    
                    YolcuUcak yolcuucak= new YolcuUcak(); 
                    	yolcuucak.setUcakID(Integer.parseInt(rs.getString(1)));
                		yolcuucak.setUcakAdi(rs.getString(2));
                		yolcuucak.setMenzil(Float.valueOf(rs.getString(3)));
                		yolcuucak.setAgirlik(Float.valueOf(rs.getString(4)));
                		yolcuucak.setUzunluk(Integer.parseInt(rs.getString(5)));
                		yolcuucak.setMaksimumHiz(Float.valueOf(rs.getString(6)));
                		yolcuucak.businessKoltukEkle(Integer.parseInt(rs.getString(7)));
                		yolcuucak.ekonomikKoltukEkle(Integer.parseInt(rs.getString(8)));
                		yolcuucak.setBagajKapasitesi(Float.valueOf(rs.getString(9)));
                            allYolcuUcakList.add(yolcuucak);              
            }
    	}
    }
    catch(Exception e){
    	e.printStackTrace();
    }
    	return allYolcuUcakList;
		
	}

}
